Formal Verification of a C Compiler Front-End
نویسندگان
چکیده
This paper presents the formal verification of a compiler front-end that translates a subset of the C language into the Cminor intermediate language. The semantics of the source and target languages as well as the translation between them have been written in the specification language of the Coq proof assistant. The proof of observational semantic equivalence between the source and generated code has been machine-checked using Coq. An executable compiler was obtained by automatic extraction of executable Caml code from the Coq specification of the translator, combined with a certified compiler back-end generating PowerPC assembly code from Cminor, described in previous work.
منابع مشابه
CompCertS: A Memory-Aware Verified C Compiler Using Pointer as Integer Semantics
The CompCert C compiler provides the formal guarantee that the observable behaviour of the compiled code improves on the observable behaviour of the source code. In this paper, we present a formally verified C compiler, CompCertS, which is essentially the CompCert compiler, albeit with a stronger formal guarantee: it gives a semantics to more programs and ensures that the memory consumption is ...
متن کاملCompiler verification for fun and profit
OF INVITED TALK Formal verification of software or hardware systems — be it by model checking, deductive verification, abstract interpretation, type checking, or any other kind of static analysis — is generally conducted over high-level programming or description languages, quite remote from the actual machine code and circuits that execute in the system. To bridge this particular gap, we all r...
متن کاملAutomatic translation of C/C++ parallel code into synchronous formalism using an SSA intermediate form
We present an approach for the translation of imperative code (like C, C++) into the synchronous formalism Signal, in order to use a model-checker to verify properties on the source code. The translation uses Ssa as an intermediate formalism, and the GCC compiler as a front-end. The contributions of this paper with respect to previous work are a more efficient translation scheme, and the manage...
متن کاملFormally Verifying a Compiler: What Does It Mean, Exactly?
Compilers, and especially optimizing compilers, are complicated programs. Bugs in compilers happen, and can lead to miscompilation: the production of wrong executable code from a correct source program. Miscompilation is documented in the literature and a concern for high-assurance software, as it endangers the guarantees obtained by source-level formal verification of programs. Compiler verifi...
متن کاملFormal Verification of Compilers
This study, completed as part of a Bachelor level independent study course, aims to survey the current landscape of research into the formal verification of compilers. This report includes a technical perspective of several current and past compiler verification projects conducted by researchers at leading universities and a final ending summary giving impressions on the future of formal compil...
متن کامل